Many modern microprocessors combine a number of processor cores into a single processor to form a multicore processor. Multicore processors mainly provide benefit by performing parallel computing. For example, multicore processors may exploit thread-level parallelism to execute different programs, or different threads, thread groups, or waves of a single program, on different parallel cores within the processor.
Graphics processing units (GPUs) may benefit from implementation as multicore processors, as various graphics processing tasks lend themselves particularly to parallel processing. For example, three dimensional (3D) projection may fall into a category of tasks which have been referred to as “perfectly parallel” or “embarrassingly parallel”.
In multicore architectures, each core may have a local memory, such as an L1 cache. However for various reasons, such as reduction of die size, several (or all) of the cores in a multicore device may share a memory, such as a shared L2 or last level (LLC) cache, other types of cache, or other levels in a cache or memory hierarchy. Sharing of a memory however may result in competition for memory resources among the cores.